home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ddj0897.zip / DYN401.ZIP / class / char.c < prev    next >
C/C++ Source or Header  |  1997-04-16  |  5KB  |  204 lines

  1.  
  2.  
  3. /*  Copyright (c) 1993-1996 Algorithms Corporation  */
  4. /*  All rights reserved.  */
  5.  
  6.  
  7.  
  8.  
  9. /*  This file automatically generated by dpp - do not edit  */
  10.  
  11. #define    DPP_STRATEGY    2
  12. #define    DPP_FASTWIDE    0
  13.  
  14.  
  15.  
  16. #line 15 "char.d"
  17. #include <math.h> 
  18.  
  19. #define    CLASS    Character_c
  20. #define    ivType    Character_iv_t
  21.  
  22. #include "generics.h"
  23.  
  24. object    Character_c;
  25.  
  26.  
  27. #line 28 "char.c"
  28. typedef struct  _Character_iv_t  {
  29.     char iVal;
  30. }    Character_iv_t;
  31.  
  32.  
  33.  
  34. #line 22 "char.d"
  35. cmeth objrtn Character_cm_gNewWithChar(object self, int val)
  36.     object obj = oSuper(Character_c, gNew, self)(self); 
  37.     ivType *iv = ivPtr(obj); 
  38.     iv->iVal = (char) val; 
  39.     return(obj); 
  40.  
  41. imeth objrtn Character_im_gStringRepValue(object self)
  42. { Character_iv_t *iv = GetIVs(Character, self);
  43.     return vSprintf(String, "'%c'", iv->iVal); 
  44.  
  45. imeth char Character_im_gCharValue(object self)
  46. { Character_iv_t *iv = GetIVs(Character, self);
  47.     return (char) iv->iVal; 
  48.  
  49. imeth short Character_im_gShortValue(object self)
  50. { Character_iv_t *iv = GetIVs(Character, self);
  51.     return (short) iv->iVal; 
  52.  
  53. imeth unsigned short Character_im_gUnsignedShortValue(object self)
  54. { Character_iv_t *iv = GetIVs(Character, self);
  55.     return (unsigned short) iv->iVal; 
  56.  
  57. imeth long Character_im_gLongValue(object self)
  58. { Character_iv_t *iv = GetIVs(Character, self);
  59.     return (long) iv->iVal; 
  60.  
  61. imeth double Character_im_gDoubleValue(object self)
  62. { Character_iv_t *iv = GetIVs(Character, self);
  63.     return (double) iv->iVal; 
  64.  
  65. imeth objrtn Character_im_gChangeValue(object self, object val)
  66. { Character_iv_t *iv = GetIVs(Character, self);
  67.     ChkArg(val, 2); 
  68.     iv->iVal = gCharValue(val); 
  69.     return self; 
  70.  
  71. imeth objrtn Character_im_gChangeCharValue(object self, int val)
  72. { Character_iv_t *iv = GetIVs(Character, self);
  73.     iv->iVal = (char) val; 
  74.     return self; 
  75.  
  76. imeth objrtn Character_im_gChangeShortValue(object self, int val)
  77. { Character_iv_t *iv = GetIVs(Character, self);
  78.     iv->iVal = (char) val; 
  79.     return self; 
  80.  
  81. imeth objrtn Character_im_gChangeUShortValue(object self, unsigned val)
  82. { Character_iv_t *iv = GetIVs(Character, self);
  83.     iv->iVal = (char) val; 
  84.     return self; 
  85.  
  86. imeth objrtn Character_im_gChangeLongValue(object self, long val)
  87. { Character_iv_t *iv = GetIVs(Character, self);
  88.     iv->iVal = (char) val; 
  89.     return self; 
  90.  
  91. imeth objrtn Character_im_gChangeDoubleValue(object self, double val)
  92. { Character_iv_t *iv = GetIVs(Character, self);
  93.     iv->iVal = (char) val; 
  94.     return self; 
  95.  
  96. imeth void * Character_im_gPointerValue(object self)
  97. { Character_iv_t *iv = GetIVs(Character, self);
  98.     return (void *) &iv->iVal; 
  99.  
  100. imeth objrtn Character_im_gFormatChar(object self)
  101. { Character_iv_t *iv = GetIVs(Character, self);
  102.     char b[2]; 
  103.  
  104.     b[0] = iv->iVal; 
  105.     b[1] = '\0'; 
  106.     return gNewWithStr(String, b); 
  107.  
  108. imeth int Character_im_gHash(object self)
  109. { Character_iv_t *iv = GetIVs(Character, self);
  110.     double t; 
  111.  
  112.     t = .6125423371 * (unsigned) iv->iVal; 
  113.     t = t < 0.0 ? -t : t; 
  114.     return (int) (BIG_INT * (t - floor(t))); 
  115.  
  116. imeth int Character_im_gCompare(object self, object obj)
  117. { Character_iv_t *iv = GetIVs(Character, self);
  118.     short sv, ov; 
  119.  
  120.     ChkArg(obj, 2); 
  121.     if (ClassOf(obj) != CLASS) 
  122.         return oSuper(Character_c, gCompare, self)(self, obj); 
  123.     if ((sv=iv->iVal) < (ov=ivPtr(obj)->iVal)) 
  124.         return -1; 
  125.     else if (sv == ov) 
  126.         return 0; 
  127.     else 
  128.         return 1; 
  129.  
  130.  
  131. #line 150 "char.c"
  132.  
  133. objrtn    Character_initialize(void)
  134. {
  135.     static  CRITICALSECTION  cs;
  136.     static  int volatile once = 0;
  137.  
  138.     ENTERCRITICALSECTION(_CI_CS_);
  139.     if (!once) {
  140.         INITIALIZECRITICALSECTION(cs);
  141.         once = 1;
  142.     }
  143.     LEAVECRITICALSECTION(_CI_CS_);
  144.  
  145.     ENTERCRITICALSECTION(cs);
  146.  
  147.     if (Character_c) {
  148.         LEAVECRITICALSECTION(cs);
  149.         return Character_c;
  150.     }
  151.     INHIBIT_THREADER;
  152.     Number_initialize();
  153.     if (Character_c)  {
  154.         ENABLE_THREADER;
  155.         LEAVECRITICALSECTION(cs);
  156.         return Character_c;
  157.     }
  158.     Character_c = gNewClass(Class, "Character", sizeof(Character_iv_t), 0, Number, END);
  159.     cMethodFor(Character, gNewWithChar, Character_cm_gNewWithChar);
  160.     iMethodFor(Character, gUnsignedShortValue, Character_im_gUnsignedShortValue);
  161.     iMethodFor(Character, gChangeDoubleValue, Character_im_gChangeDoubleValue);
  162.     iMethodFor(Character, gDoubleValue, Character_im_gDoubleValue);
  163.     iMethodFor(Character, gCompare, Character_im_gCompare);
  164.     iMethodFor(Character, gChangeLongValue, Character_im_gChangeLongValue);
  165.     iMethodFor(Character, gChangeShortValue, Character_im_gChangeShortValue);
  166.     iMethodFor(Character, gShortValue, Character_im_gShortValue);
  167.     iMethodFor(Character, gPointerValue, Character_im_gPointerValue);
  168.     iMethodFor(Character, gCharValue, Character_im_gCharValue);
  169.     iMethodFor(Character, gStringRepValue, Character_im_gStringRepValue);
  170.     iMethodFor(Character, gChangeUShortValue, Character_im_gChangeUShortValue);
  171.     iMethodFor(Character, gHash, Character_im_gHash);
  172.     iMethodFor(Character, gChangeValue, Character_im_gChangeValue);
  173.     iMethodFor(Character, gLongValue, Character_im_gLongValue);
  174.     iMethodFor(Character, gFormatChar, Character_im_gFormatChar);
  175.     iMethodFor(Character, gChangeCharValue, Character_im_gChangeCharValue);
  176.  
  177.     ENABLE_THREADER;
  178.  
  179.     LEAVECRITICALSECTION(cs);
  180.  
  181.     return Character_c;
  182. }
  183.  
  184.  
  185.  
  186.